RELEASE NOTES

These notes contain technical information and known problems for VAX-11 BASIC Version 2.1.
The following sections, applicable to version 2.0, remain unchanged in version 2.1:

New Features
Technical Changes

However, the following sections have been updated to reflect corrections and changes made in version 2.1:

 o Differences Between VAX-11 BASIC and PDP-11 BASIC-PLUS-2 0
 o Upward Incompatabilities for Version 2 
 o Informational Notes 
 o Known Compiler Problems 
 o Known RTL Problems 
 o Documentation Notes 

NEW FEATURES 

This is a summary of new features for VAX-11 BASIC Version 2. 
In BASIC Version 2, you can use alphanumeric labels to mark blocks of code; thus line numbers are not as important as  they have been in previous versions. However, you can continue to write your programs in the old style, if you so desire. 
Note that programs must still start with a line number and that line numbers are still required for the RESUME statement.
That is, the RESUME statement accepts only line-number arguments, not labels. 
The following new structured programming constructs and features may change your programming style: 

 - The SELECT-CASE statement lets you code a multi-branch IF statement. 
 - ITERATE <label> and EXIT <label> let you explicitly  control the execution of FOR, WHILE, and UNTIL loops. Further, the EXIT statement also provides a structured0 exit from IF and SELECT statement blocks. 
 - The OTHERWISE clause for ON GOTO statements lets you supply a target line or label to get control if the control variable is out of range.

Page 2

See Chapter 3 in the BASIC User's Guide for more% information on these features. 
BASIC Version 2 has a dynamic record definition capability using MAP, MAP DYNAMIC, and REMAP statements.
See Chapter 52 in the BASIC User's Guide for more information. 
You can now compile a program with the /TYPE=EXPLICIT qualifier, or the OPTION TYPE=EXPLICIT statement, to disable the implicit variable declaration. This means that a typographical error in a variable name no longer causes a new variable to be created. 
BASIC now accepts compiler directives. Compiler directives: 

 1) give you greater control over the listing file,
 2) allow conditional compilation, and 
 3) let you include BASIC source  text from multiple files. 
 
Compile-time error reporting has been greatly improved and the format for error messages has changed. See Appendix A in the BASIC on VAX/VMS Systems manual for more information. 
There is a new general format for numeric constant notation.
See Chapter 5 in the BASIC User's Guide for more information. 
The PRINT USING statement has new formatting characters which allow:

 - Credit and debit notation 
 - Blank-if-zero fieldse 
 - Leading zeros instead of leading blanks 

See Chapter 8 in the BASIC User's Guide for more information. 
VAX-11 BASIC has four new data types:

 BYTE (8-bit integer data),
 DECIMAL (packed decimal data),
 GFLOAT (VAX/VMS G_float data type),
 and HFLOAT (VAX/VMS H_float data type).
 
Further, a single program can now contain any combination of data types. See Chapter 5 in the BASIC User's Guide for more information. 
The RECORD statement lets you create user-defined data structures.
See Chapter 6 in the BASIC on VAX/VMS Systems manual for more information. 
VAX-11 BASIC now lets you explicitly declare external routines, including the data types and passing mechanisms of  parameters.
See Chapter 6 in the BASIC User's Guide and Chapter 3 in BASIC on VAX/VMS for more information.

Page 3

VAX-11 BASIC has four new functions (MAG, INTEGER, REAL, DECIMAL). See the BASIC Reference Manual for more information.
In BASIC Version 2, you can access records by Record File Address. See Chapter 9 in the BASIC User's Guide for more information. 
In BASIC Version 2, indexed file keys of the STRING data type can consist of up to eight key segments. Also, keys can be packed decimal variables.
See Chapter 9 in the BASIC User's Guide for more information. 
VAX-11 BASIC now lets you lock all accessed records until you explicitly unlock them. 
See Chapter 8 in the BASIC on VAX/VMS Systems manual for more information.
VAX-11 BASIC now supports the extraction of record definitions from the VAX-11 Common Data Dictionary (CDD).
See Chapter 9 in the BASIC on VAX/VMS Systems manual for more information.
BASIC Version 2 now supports an OPTION statement. This lets you specify compilation qualifiers (such as default data type) from within the program.
VAX-11 BASIC now supports the /ANSI_STANDARD qualifier which causes BASIC to compile your program according to the rules for ANSI Minimal BASIC.
See Chapter 7 in the BASIC on VAX/VMS Systems manual for more information.
VAX-11 BASIC now supports the /FLAG qualifier. If specified, this qualifier warns you if a program contains a declining feature, a language feature incompatible with PDP-11 BASIC-PLUS-2, or a language feature that inhibits optimization with /NOSETUP. 
VAX-11 BASIC now contains an integrated resequencer, invoked by the RESEQUENCE compiler command. 

TECHNICAL CHANGES 
This is a summary of changes to existing features in VAX-11 BASIC.
In Version 2 of both BASIC-PLUS-2 and VAX-11 BASIC, all declarative statements (DIM, COMMON, MAP, DEF, DECLARE, and so on) must lexically precede any reference to variables or functions declared.
VAX-11 BASIC V1.n, ignored any input typed while the SLEEP statement was executing. In V2, BASIC saves any input typed while SLEEP is executing.

Page 4

In VAX-11 BASIC Version 2: 

 - Pound signs are optional for channel expressions in the OPEN and CLOSE statements.
 The FILE keyword is now optional in the OPEN statement. 
 A trailing semicolon on an INPUT, INPUT LINE, or LINPUTe
 statement is no longer allowed and generates a syntax error.e 
 Formerly unused error number 176 is now NEGTABNOT, Negative 
 TAB not allowed.
 See the Appendix B in the BASIC on VAX/VMS' Systems manual for more information.p 
 Formerly unused error number 177 is now TOOMUCDAT, Too much 
 data in record.
 See the Appendix B in the BASIC on VAX/VMS' Systems manual for more information. 
 In Version 1.4 of VAX-11 BASIC and Version 1.6 of
 BASIC-PLUS-2, BASIC interpreted the first key specified in an
 OPEN statement as the primary key and subsequent keys as
 alternate keys, regardless of the PRIMARY KEY and ALTERNATE
 KEY clause specifications.
 In Version 2, you must specify; the PRIMARY KEY clause before any ALTERNATE KEY clauses.s 
 In Version 1.4 of VAX-11 BASIC and Version 1.6 of
 BASIC-PLUS-2, BASIC ignored a [NO]SPAN clause for indexed and
 relative files. In Version 2, BASIC signals the error
 "ORNINCCLA, SPAN keyword is inconsistent with file
 organization". The SPAN/NOSPAN clause is valid only for sequential files. 
 BASIC Version 2 now signals the run-time error messagem
 "Integer error" (ERR=51) or the compile-time message
 "OPNCLAVAL, OPEN clause <clause> value greater than <number>"
 if the value is a constant for values greater than 32767 in( the following
OPEN statement clauses:  - RECORDSIZEa  - BLOCKSIZE  - EXTENDSIZEm  - BUCKETSIZE1  - CONNECT 
 BASIC Version 2 also signals the error for values greater
 than 255 in the OPEN statement WINDOWSIZE and BUFFER clauses.  h Page 5 9 DIFFERENCES BETWEEN VAX-11 BASIC AND PDP-11 BASIC-PLUS-2 G This is a summary of differences between VAX-11 BASIC and G BASIC-PLUS-2. You should take these incompatibilities intoeG consideration when coding programs that are to be transportable  between the two systems.e 
 In BASIC-PLUS-2, a string variable that appears in a FIELDC
 statement is no longer associated with the I/O buffer if it
 is used to store input (as in an INPUT, READ, or MOVE FROM
 statement). Thus, in the 
following example, A$ is no longer. fielded after the INPUT statement executes:  FIELD #1%, 10% AS A$a INPUT A$n 
 However, in VAX-11 BASIC, A$ remains a fielded variable and2 acts like a static string when receiving input. 
 In VAX-11 BASIC, PRINT USING string formatting characterst
 (L,R,C, and E) may be either uppercase or lowercase. In
 BASIC-PLUS-2, these characters must be uppercase as PRINT/ USING treats lower-case letters as literals.P 
 A PUT statement with a COUNT of zero creates a record with aL
 length of zero in VAX-11 BASIC and with the length specified, in the RECORDSIZE clause in BASIC-PLUS-2. 
 If two strings overlap in a MAP, string assignment can return 
 different values on VAX-11 BASIC and BASIC-PLUS-2. VAX-11
 BASIC performs string assignment as if no overlap existed.
 BASIC-PLUS-2 performs the assignment a character at a time
 from left to right. (Note that RSET assignment is performed$ from right to left.) For example:  10 MAP (FOO) A$ = 5x# MAP (FOO) FILL$ = 2, B$ = 5s A$ = 'ABCDE' PRINT A$ B$ = A$1 PRINT B$, A$ 3 When this program is run, VAX-11 BASIC displays:r 

 ABCDEk ABCDE ABABC  BASIC-PLUS-2 displays:y 

 ABCDEq ABABA ABABA 
 In BASIC-PLUS-2, the execution of an OPEN statement with ap
 MAP clause causes variables in the named MAP to be
 initialized to zero or the null string. In VAX-11 BASIC, a

Page 6 
 MAP named in an OPEN statement is never initialized. Thus A$
 in the following program prints as 30 Xs in VAX-11 BASIC and$ as a null string in BASIC-PLUS-2: 10 MAP (FOO) A$ = 30$ A$ = STRING$(30, ASCII('X'))+ OPEN "FOO.BAR" AS FILE #1%, MAP FOOf PRINT 'This is A$: ';A$ 
 When performing matrix multiplication, VAX-11 BASIC signalse
 the error "Illegal operation" when the same array appears as
 both the destination and source. BASIC-PLUS-2 does not3 signal an error and produces unexpected results. 
 Several errors return different run-time error messages on 
 BASIC-PLUS-2 and VAX-11 BASIC. You should take the following
 differences into consideration when coding error handlers for
 programs that are to be transportable between the two systems: 
 - Non-numeric or floating-point data is input to an INPUT; or READ statement expecting numeric or integer data:b ! Error number 52 in BASIC-PLUS-2C! Error number 50 in VAX-11 BASICh 
 - The integer index of a FOR loop exceeds the default integer size: ! Error number 60 in BASIC-PLUS-2e! Error number 51 in VAX-11 BASICa 
 - Channel #0 is opened: Error number 7 in BASIC-PLUS-2! Error number 46 in VAX-11 BASICr 
 BASIC-PLUS-2 on RSTS/E systems returns error code 19 when ans
 attempted GET fails because another user has access to that
 block. VAX-11 BASIC and BASIC-PLUS-2 on RSX-11M/M-PLUS! systems return error code 154.n 
 In BASIC-PLUS-2, an OPEN error causes the STATUS variable tot
 be set to the RMS STS field value. In VAX-11 BASIC, an OPEN6 error causes the STATUS variable to be set to zero. 
 When the PRINT USING statement formats a positive E-notationa
 number, VAX-11 BASIC prints a plus sign between 'E' and the
 exponent, while BASIC-PLUS-2 prints a space between 'E' and the exponent. 
 In VAX-11 BASIC, specifying an OPEN statement ALLOW NONEi
 clause requires write privileges for the file. BASIC-PLUS-22 does not require write priviliges for the file.

Page 7 
 In BASIC-PLUS-2, entering CTRL/Z in response to INPUTa
 statements terminates the current input line and signals "End
 of file on device" (ERR=11), but does not assign the text
 typed before the CTRL/Z to the variable. However, VAX-11
 BASIC does the assignment and signals "End of file on device"3 (ERR=11) when the next INPUT statement executes.N 
 In VAX-11 BASIC, individual array element parameters are,
 passed BY REF and are modifiable. In PDP-11 BASIC-PLUS-2,
 individual array element parameters are passed by local copy and are not modifiable. 
 When you declare variables in a MAP DYNAMIC statement, thes
 variables point to the first byte of the map until they are
 repositioned with a REMAP statement. If the MAP DYNAMIC
 statement is in an external subprogram or function,
 BASIC-PLUS-2 resets the variables' pointers to the first byte
 each time the external module is invoked. However, VAX-11
 BASIC initializes the map area only once, when the external
 module is first called, and does not reset the variables'
 pointers on subsequent calls. This incompatibility will be fixed in a future release.e 
 In addition to not initializing the pointers, VAX-11 BASIC
 does not reset the pointers when you call a module
 recursively. That is, if a module calls itself, any changes
 to the pointers' positions in the recursive call remain in$ effect after you exit the module. ' UPWARD 
INCOMPATIBILITIES FOR VERSION 2r G This is a summary of changes in Version 2 of VAX-11 BASIC that arehG incompatible with previous versions. Before using Version 2 to run atG program written on a previous version, you should make sure thesea: incompatabilities do not alter the program's performance. 
 If you link a VAX-11 BASIC V1.n object module with an object 
 module created by the VAX-11 BASIC V2 compiler, you may6 receive the following error from the VAX-11 Linker: 9 %LINK-W-MULPSC, conflicting attributes for psect $ARRAYu in module <module-name> 
 This error is produced if one or more of the V1.n modules use
 a MAP or COMMON array in a context that requires a descriptor
 (for example, if the array is used in a MAT statement or passed as a parameter). 
 You can ignore this error, unless the program is intended to
 become a shareable image. If this is the case, you can
 either recompile all program modules with BASIC V2, or you
 can declare the attributes for the $ARRAY PSECT with a Linker
 options file. For example, if MAIN is compiled with VAX-11
 BASIC V1 (and uses an array of this type) and SUB1 is

Page 8 
 compiled with VAX-11 BASIC V2, the following options file
 could be used to link them and give $ARRAY the correct
 attributes:  MAIN,SUB1o3 PSECT=$ARRAY,RD,WRT,NOEXE,OVR,LONG,LCL,NOSHR,REL 
 In Version 1.n of both BASIC-PLUS-2 and VAX-11 BASIC, thet
 first OPEN statement KEY clause specified the primary key,
 and subsequent key clauses specified alternate keys,
 regardless of the use of PRIMARY and ALTERNATE keywords. In
 Version 2, the key named in the PRIMARY KEY clause is the primary key.R 
 In Version 1.n of both BASIC-PLUS-2 and VAX-11 BASIC, SPAN,
 and NOSPAN clauses were ignored for relative and indexed
 files. In Version 2, BASIC signals "OPNREQSEQ, keyword
 requires SEQUENTIAL organization" if you use a SPAN or NOSPAN1 clause when opening relative or indexed files. 
 In BASIC Version 2, the PRINT USING statement accepts several , new formatting characters and directives:  - Underscore (_)t  - Zero (0)  - Percent sign (%)e 

 - (<CD>)a 
 If existing programs use these characters as literals in a
 format field, the programs will no longer work. If two
 formatting characters conflict, for example, asterisk fill
 and 'print leading zero,' BASIC treats them as two distinct format fields.p 
 In BASIC V2.0, underscores in the PRINT USING statement mean 
 that the following character is to be treated as a literal.
 Therefore, existing programs having an underscore in a PRINT0 USING format string may not work as expected. 
 The behavior of RESUME without specifying a line number has 
 never been completely documented. See Chapter 11 in the+ BASIC User's Guide for more information. 
 VAX-11 BASIC Version 1.n allowed a MARGIN statement on anyi
 file type except VIRTUAL. In Version 2, BASIC signals an
 error if a MARGIN statement is executed on any file other than a terminal-format file.d 
 In VAX-11 BASIC Version 2.0, the SWAP% function alwaysS
 converts the argument to a WORD integer and swaps the
 resulting two bytes. In Version 1, SWAP% converted all
 arguments to a LONG integer and swapped the two low-order

Page 9
 If a large number of indexed files are created and the RMSm
 file sharing page count is exceeded, the last file opened is
 improperly created. In Version 1.n, VAX-11 BASIC signaled
 "Cannot open file" for this condition. In Version 2, BASIC9 signals "Error on open -- file corrupted" (ERR = 178).r 
 In Version 1.n, a CHAIN to a non-existent file caused BASICg
 to exit to DCL without signaling an error. In Version 2,
 chaining to a non-existent file causes BASIC signal "Can't# find file or account" (ERR = 5). 
 In Version 1.n, entering more than 255 characters in response 
 to an INPUT, LINPUT, or INPUT LINE statement caused BASIC to
 signal "Fatal system I/O failure" (ERR = 12). In Version 2,+ BASIC signals "Line too long" (ERR = 47)o 
 In previous versions of VAX-11 BASIC, an integer constanti
 being passed BY REF to an external module was always passed
 as a LONG value. In Version 2, integer constants are passed
 as the default integer size, unless you explicitly state otherwise. For example:d  100 OPTION TYPE=BYTE CALL SUB1 (5%)t 
 In previous versions, the value 5 was passed as a LONG
 integer. Version 2 passes 5 as a BYTE integer. To avoid
 confusion, use an EXTERNAL statement to explicitly declare# the data type of each parameter:  100 OPTION TYPE=BYTE EXTERNAL SUB SUB1 (LONG)s CALL SUB1 (5%)c  INFORMATIONAL NOTES G This section describes how the compiler performs certain operations.mG This information is included to answer frequently asked questions G about BASIC features and to clarify the compiler's capabilities. G Knowing how these BASIC features work can help you avoid some commoni" errors when writing program code. 
 DIGITAL recommends a WORKING SET quota of 350 to optimize = performance for accounts primarily accessing VAX-11 BASIC.t 
 You cannot use a line number twice in BASIC program code,u
 even with the %IF-%THEN-%ELSE-%END-%IF lexical directive.
 Conditional compilation is performed after BASIC has ordered
 program lines in ascendin
rder. Therefore, if a line
 number in a %THEN block of code is repeated in a %ELSE block
 of code, the first occurence of the line number is replaced, by the second, before compilation begins.

Page 10 
 Because BASIC deals with signed quantities, in Version 1.4,a
 you had to specify a negative value for large values in OPEN
 clauses. For example, to specify the value 255 in the
 WINDOWSIZE clause or the value 65535 in the EXTENDSIZE
 clause, you 
had to specify -1. If you specified anything
 larger than 127 or 32767, BASIC signaled an integer error.
 With the new explicit literal notation, you can specify
 unsigned values up to the range limit of the field for OPEN clauses. For example:t 
 - Instead of specifying -1 for 65535 in the EXTENDSIZE clause, specify '65535'W. 
 - Instead of specifying -1 for 255 in the WINDOWSIZE clause, specify '255'W. 
 BASIC-PLUS-2 now clears PRINT buffers when the CLOSE , statement executes, as VAX-11 BASIC does.  KNOWN COMPILER PROBLEMS G This is a summary of problems in the BASIC compiler that have not been  fixed for this release. 
 If a record definition extracted from the CDD contains ai
 variant TAG field, BASIC signals the compile-time error, CDDTAGIGN. The error message appears as: 
 %BASIC-I-CDDTAGIGN, !AS tag value from CDD ignored for !/  It should appear as:t 5 %BASIC-I-CDDTAGIGN, tag value from CDD ignoredS 
 At the present time, VAX-11 BASIC cannot interpret CDD record 
 definitions written by DBMS. An attempt to access such
 records results in the compile-time error "BASIC-E-CDDVARFLD,
 Field <record-name> from CDD has variable offset or length.": This problem will be fixed in a future release of DBMS. 
 Under certain conditions, an IF-THEN-ELSE block at the end of 
 a program can return an internal error when compiled. The
 error occurs when: (1) the ELSE clause is of the form: ELSE
 line-number and (2) it is not followed by either a numbered4 program line or a continuation line. For example  10 print xT" 20 if a% then x = 1 else 10 
 This error condition can be avoided by including an END or an1 END IF statement after the IF-THEN-ELSE block.

Page 11
 The CONTINUE, EXIT, IDENTIFY, and SCRATCH commands do not 
 accept arguments. However, if extraneous information follows
 these commands, the extra data is ignored and no error is signaled. For example:  Ready  SCRATCH #1 
 In this case, the SCRATCH command is executed without! indicating an error condition. 
 The SEQUENCE command also ignores additional arguments.
 However, it does so only if the two appropriate arguments are
 present. That is, the first two arguments following the
 command are interpreted as a line number and an increment6 value, respectively, and all other data is ignored. 
 Cross reference listings incorrectly list MOVE TO statementse
 as destructive references of the variables whose values are
 being moved into the I/O buffer. MOVE TO statements are not destructive references. 
 It is illegal to reference a DEF or FUNCTION name in a MOVEr
 TO or MOVE FROM statement. However, BASIC does not signal an error. For example:5  10 DEF* FNA . . FNEND 
 20 MOVE FROM 1%, FNA 
 The statement at line 20 should be signaled as an error at
 compile-time, but is not. 
 It is illegal for a FIELD statement to specify a DEF ort
 FUNCTION name or an element of an array dimensioned at
 run-time. However, BASIC does not signal a compile-time error.a 
 You can use the ORGANIZATION UNDEFINED clause only in OPENt
 statements that specify FOR INPUT. However, BASIC does not< signal a compile-time error if FOR INPUT is not included. 
 There is a problem with the VAX-11 debugger that does not 
 allow DECIMAL array elements or STRING constants to be correctly examined.  
 KNOWN RTL PROBLEMSa G The following problems exist in the RTL code supporting BASIC : routines. 
 They will be fixed in a future release of VMS.   
 
 Page 12e 
 An attempt to change a string to an array with the CHANGE 
 statement results in the 
error SUBOUTRAN (ERR = 55) when the
 string is too long to fit into the elements of the array.? Element zero of the array is not set to the string's length.M 
 When the length of a string is greater than 127, or when oner
 of the character codes is greater than 127, an attempt to
 change the string to a BYTE array with the CHANGE statement( does not result in an overflow error. 
 An attempt to open TT: or SYS$INPUT with an UNDEFINEDu2 organization results in a bad recordsize value. 
 When converting HFLOAT or GFLOAT numbers to DECIMAL, the 
 error "DECERR, DECIMAL error or overflow" (ERR=181) may not! be signaled when it should be. 
 The QUO$ function can return incorrect data when: (1) thed
 numeric precision desired forces the quotient to be rounded
 and (2) the roundin
peration adds another decimal place to the quotient. For example: ! 10 PRINT QUO$("8","10",0%) 
 This statement prints 0 rather than 1 when executed. The
 quotient of the string division is .8, consistin
f a single
 decimal place to the right of decimal point. However, the
 roundin
peration would have to create a new decimal place
 to the left of the decimal point to achieve the correct answer of 1.0.e 
 If the numeric argument to the QUO$ function is between 240p
 and 5000, or if it is greater than 10240, BASIC returns a memory management violation.i 
 An attempt to use the CHANGE statement to change a numericg
 array into a string variable may result in an access
 violation error if the numeric array contains more than 256 elements. 
 If a numeric array is dynamically mapped, it cannot be passeds
 as a parameter to an external subprogram or function. BASIC
 erroneously reports the error "arguments don't match".
 However, dynamically mapped STRING arrays can be passed as parameters. 
 Using a dynamically mapped LONG array as the destination of ai8 MAT addition statement can produce incorrect results. 
 Using a dynamically mapped array of any data type as thef
 destination of a MAT scalar multiplication, where the scalar
 value is of the data type DOUBLE, can produce incorrect results.e   
 
 Page 13 
 The MAT PRINT print statement displays incorrect values fore* dynamically mapped BYTE or WORD arrays. 
 Performing MAT subtraction on BYTE arrays can alter the 
 program context. For the present release, it is recommended8 that you do not use MAT subtraction with BYTE arrays. 
 The following problems apply to the use of format strings ino6 the PRINT USING statement and the FORMAT$ function: 
 - In some cases, the use of the zero-fill formatting
 character (<0>) and the comma formatting character< results in unexpected additional zeros. For example: - 10 PRINT USING "<0>####,###", 123456 , 20 PRINT USING "<0>###,###", 123456
 RUNNH  00,123,456 0,123,456 
 - If a numeric format string specifies more than 38 digits
 to the right of the decimal point, spurious characters+ are included after the numeric item.h 
 - If a format string ends with an odd number of contiguous
 underscore characters or an incomplete <CD> format9 character, the program it is in hangs at run-time.t 
 - The "^^^^" formatting character produces erroneous
 results when used to display a variable or constant of the DECIMAL data type.y 
 The following problems are present in version 3.2 of VMS.e2 Installing version 3.3 corrects these problems: 
 - If the VAX/VMS system parameter VIRTUALPGCNT is less than
 9000 pages, an attempt to use the PRINT statement to
 examine a program variable in immediate mode may result$ in an access violation error. 
 - Using PRINT USIN
r FORMAT$ on a very small number (less
 than 10 to the -10th power) results in an incorrect value
 if the format string causes the number to be rounded to zero. 
 - If "<CD>" appears at the beginnin
f a format string,
 BASIC issues a format error. BASIC should interpret "<CD>" as a literal.p    
 
 Page 14  DOCUMENTATION NOTES G This section contains corrections and addenda to the BASICs documentation set.t 
 BASIC signals a new compile-time error message, "MAPDYNNOT, 
 MAP DYNAMIC <map name> may not be larger than 32767 bytes",5 when a dynamic map requires more than 32767 bytes.a 
 BASIC signals a new compile-time error, "DEFINVNOT, DEFe
 invocation not allowed in assignment context" if you attempt< to assign a value to a function invocation. For example:  DEF FNA(A) = A^2 .e .s .m FNA(3) = 9 
 In the BASIC environment, preceding a command with a space orT? tab results in the error "UNKCOMINP, Unknown command input".s 
 The compile-time error messages, KEYMUSBE and KEYMUSTBE,n
 reference WORD, LONG, and DECIMAL keys, not just INTEGER and
 STRING keys as documented. The error messages are "KEYMUSBE,
 key must be either word, longword, string, or decimal" and
 "KEYMUSTBE, key, <vbl-nam> in map must be either word,? longword, string, or decimal". BYTE keys are not supported.a 
 The compile-time error messages DEFMODNOT and DEFSIZNOT dor. not exist, even though they are documented. 
 There is a new compile-time error message, "RESATTINC, resultf
 attributes inconsistent with prior declaration". BASIC
 signals this error when a function is implicitly defined
 before it is declared with a DEF statement and the data types
 specified in the implicit definition are inconsistent with
 the DEF declaration. The data-type specifications must match
 in both the function declaration and the function definition. 
 VAX-11 RMS only allows file sharin
f relative, indexed, andt
 sequential files with fixed length (512 byte) records. It
 does not allow file sharin
f sequential files with variable
 length records (the default). Thus, you can use an ALLOW
 clause in the OPEN statement to specify file sharin
nly on
 relative, indexed, and sequential files with fixed length records. 
 The severity of the compile-time message FOORFEEMUS haso/ changed from E (ERROR) to I (INFORMATIONAL).C 
 BASIC signals the compile-time error message "BOUCANNOT,i
 bound cannot be specified for array <array-name>", if you
 attempt to specify array bounds in a SUB or FUNCTION
 statement and the array is not being received BY REF. BASIC   
 
 Page 15e 
 also signals the error for array bounds specified in an
 EXTERNAL statement that declares a SUB or FUNCTION subprogram. 

 The /NOBOUNDS qualifier does not effect VIRTUAL arrays or ) arrays received as parameters BY DESC.o A o Arrays received BY REF are always treated as row major.i 
 Table 2-3 in the BASIC on VAX/VMS Systems manual contains twoI
 incorrect arguments to the BASIC DCL command's /SHOW
 qualifier. /SHOW=[NO]SOURCE and /SHOW=[NO]MACHINE do not exist. 
 Section 2.1.9 in the BASIC on VAX/VMS Systems manual shows  the following HELP command:  Ready  HELP ERROR ACTARGMUS 7 This command does not work. The correct command is:e  Ready # HELP ERROR COMPILE_TIME ACTARGMUS 
 The BASIC Reference Manual does not show the /SCALE qualifieri
 in Table 17. This qualifier is identical to the SCALE9 command and can be used only with the COMPILE command. 
 The BASIC Reference Manual incorrectly refers to the PRINT 
 USING blank-if-zero format character (<%>) as the
 print-if-zero format character. The index entry for this% format is correct (blank-if-zero).a 
 The GFLOAT and HFLOAT keywords in the format for the REALs
 function shown in the BASIC Reference Manual are VAX-11 BASIC only keywords.B 
 You can use the ORGANIZATION UNDEFINED clause only in OPENE% statements that specify FOR INPUT. 
 The documentation of the MID$ function in the BASIC Referencep
 Manual incorrectly states that the third argument is the
 position of the last character of the string being extracted.
 It should say the third argument specifies the length of the1 string being extracted, not the last position.o 
 Variables of the RFA data type cannot be used in anyi
 arithmetic operation except an equal to (=) or not equal to
 (<>) comparison. Greater than or less than comparisons are invalid for RFA variables.a i 
 
 Page 16e 
 The BASIC Reference Manual incorrectly describes the MAGTAPEi
 function as being BASIC-PLUS-2 only. Both VAX-11 BASIC and- BASIC-PLUS-2 support the MAGTAPE function.  fixed length (512 byte) records. It
 does not allow file sharin
f sequential files with variable
 length records (the default). Thus, you can use an ALLOW
 clause in t 